function TP2(Tc, Tv, ti, tf, h, init, prefix, doOde)
%Tc = 0.1;
%Tv = 0.2;
%ti = 0;
%tf = 1.2;
%h = 0.1;
%init = 100;
%doOde = 1;
%prefix = '';

slot = [ti tf];
f = almacen(Tc, Tv);
funEsperada = funAnalitica(Tc, Tv, init);
opts = odeset("InitialStep", h);

% Falta exportar tablas a LaTeX

dominio = ti:h:tf;
resEsperados = struct(
'x', dominio,
'y', funEsperada(dominio));

outfile = fopen(sprintf('%stablas.part.tex', prefix), "w");

solvers = struct(
	'euler', opts,
	'rk2', opts,
	'rk4', opts);

if(doOde)
		solvers.ode23 = [];
		solvers.ode45 = [];
end;

if(doOde)
		postfix = '';
else
		postfix = ' con condiciones estables';
end;

for [o, k] = solvers
		s = feval(k, f, slot, init, o);
		s.yexp = funEsperada(s.x);
		s.d = abs(s.yexp - s.y);
		s.e = s.d ./ s.yexp;
		sol.(k) = s;
		n = size(s.x)(1);
		report(outfile, s, postfix);
end;
fclose(outfile);

figure();
plot(resEsperados.x, resEsperados.y);
xlabel("t");
ylabel("x");
print(sprintf('%sresEsperados.png', prefix));

figure();
p = @(s) sprintf("-x;%s;", s);
if(doOde)
	semilogy(
		sol.euler.x, sol.euler.e, p("euler"),
		sol.rk2.x, sol.rk2.e, p("rk2"),
		sol.rk4.x, sol.rk4.e, p("rk4"),
		sol.ode23.x, sol.ode23.e, p("ode23"),
		sol.ode45.x, sol.ode45.e, p("ode45"));
	xlabel("t");
	ylabel("|e|");
	print(sprintf('%serrores.png', prefix));
else
	semilogy(
		sol.euler.x, sol.euler.e, p("euler"),
		sol.rk2.x, sol.rk2.e, p("rk2"),
		sol.rk4.x, sol.rk4.e, p("rk4"));
	xlabel("t");
	ylabel("|e|");
	print(sprintf('%serrores.png', prefix));
	
end;
end;

